8+2[1] 10
8-2[1] 6
8*2[1] 16
8/2[1] 4
AfromapR Bouaké 2025
Nous allons commencer par passer quelques commandes arithmétiques simples. Il suffit de les taper dans la console de R pour qu’elles s’executent automatiquement.
8+2[1] 10
8-2[1] 6
8*2[1] 16
8/2[1] 4
## Puissance
8**2[1] 64
## Racine carrée
sqrt(8)[1] 2.828427
8**(1/2)[1] 2.828427
## Logarithme népérien
log(10)[1] 2.302585
# Logarithme décimal
log10(10)[1] 1
## Le nombre pi
pi[1] 3.141593
## Sinus
sin(pi)[1] 1.224647e-16
## Cosinus
cos(pi)[1] -1
## Tangente
tan(pi)[1] -1.224647e-16
Les objets élémentaires de R apparaissent dans la fenêtre environnement sous la rubrique Values une fois qu’ils sont créés. Ils sont stockés dans la mémoire de votre ordinateur mais effacé si celui-ci est éteint
Un élément est unique et constitue la brique de base de tous les objets suivants. On peut aussi l’interpréter comme un vecteur de longueur 1 ou une matrice de dimension 1x1.
x<-8
y<-2
x+y[1] 10
x*y[1] 16
x**y[1] 64
Les éléments se combinent différemment selon leur type. Par exemple, des éléments de type caractère (character) peuvent être assemblés avec l’instruction paste() ou découpez avec l’instruction substr() :
x<-"Bonjour"
y<- "tout le monde"
z<- "!"
paste(x,y,z)[1] "Bonjour tout le monde !"
substr(x,1,3)[1] "Bon"
Quant aux éléments logiques (logical) nous verrons qu’ils peuvent se combiner avec des opérateurs comme & qui signifie ET ou bien | qui signifie OU.
x<-TRUE
y<-FALSE
x & y[1] FALSE
x | y [1] TRUE
Un vecteur est un ensemble d’éléments de même type que l’on a concaténés à l’aide de l’instruction c(). On peut ensuite les aditionner, les multiplier ou les combiner avec des éléments.
x <- c(1,2,4,8,16)
y <- 4
x+y[1] 5 6 8 12 20
x*y[1] 4 8 16 32 64
x**y[1] 1 16 256 4096 65536
On remarque dans l’exemple ci-dessus que R n’a pas de problème pour combiner des vecteurs de tailles différentes.
Une matrice est un ensemble de vecteurs de même longueur et de même type. On peut donc construire une matrice en concaténant des vecteurs verticalement avec cbind()ou horizontalement avec rbind().
# deux vecteurs
x1 <- c(1,2,4,8,16)
x2 <- c(5,10,15,20,25)
# matrice en colonnes
m1 <- cbind(x1,x2)
m1 x1 x2
[1,] 1 5
[2,] 2 10
[3,] 4 15
[4,] 8 20
[5,] 16 25
# matrice en lignes
m2 <- rbind(x1,x2)
m2 [,1] [,2] [,3] [,4] [,5]
x1 1 2 4 8 16
x2 5 10 15 20 25
# piège !
m3 <- c(x1,x2)
m3 [1] 1 2 4 8 16 5 10 15 20 25
is.matrix(m3)[1] FALSE
Si on assemble deux vecteurs à l’aide de la commande c()on obtient un vecteur et pas une matrice.
R utilise des types plus complexes d’objets qui lui sont propres et qui sont en général des listes ou des listes de listes.
Les vecteurs regroupent des éléments de même type tandis que les listes regroupent des éléments ou des objets de type quelconque. Le type liste est donc beaucoup plus général, mais aussi plus difficile d’emploi.
On peut comparer une liste à un panier de course dans lequel on mélange des choux, des carottes, des navets, une boîte de douze oeufs, un paquet de croquettes pour chiens, etc…
# Format vecteur
prenom <- c("Ali", "Amine",
"Anne","Marc","Zayneb")
sexe <- c("H","H","F","H","F")
age <- c(21,22,24,18,25)
# Format liste
Ali <- list("H",21)
Amine <- list("F",22)
Anne <- list("F",28)
Marc <- list ("H",18)
Zayneb <- list("F",25)
# Ne pas confondre !
Ali <- c("H",21)
Ali[1] "H" "21"
Ali <- list("H",21)
Ali[[1]]
[1] "H"
[[2]]
[1] 21
Chaque valeur, vecteur ou matrice appartient à un seul type de données. Il est important de ne pas les confondre, sous peine d’obtenir des résultats … douteux. On se limitera ici aux principaux types, d’autres étant vus ultérieurement dans l’année :
La commande str() permet de vérifier le type d’un vecteur (ou d’une matrice) et d’en afficher la dimension.
# Format charactère
prenom <- c("Ali", "Amine","Anne",
"Marc","Zayneb")
str(prenom) chr [1:5] "Ali" "Amine" "Anne" "Marc" "Zayneb"
# Format logique
likeR <- c(TRUE,FALSE, TRUE,
FALSE, FALSE)
str(likeR) logi [1:5] TRUE FALSE TRUE FALSE FALSE
# Format Factor
sexe <- c(1,1,2,1,2)
sexe<-as.factor(sexe)
levels(sexe) <-c("Homme","Femme")
str(sexe) Factor w/ 2 levels "Homme","Femme": 1 1 2 1 2
# Format numerique
age <- c(21,22,24,18,25)
str(age) num [1:5] 21 22 24 18 25
# Format date
nais<-c("1999-10-28","1998-10-13",
"1996-10-15","2002-02-07","1995-06-18")
nais<-as.Date(nais)
str(nais) Date[1:5], format: "1999-10-28" "1998-10-13" "1996-10-15" "2002-02-07" "1995-06-18"
R est un langage de programmation multifonction qui évolue depuis maintenant plus de 30 ans et auquel s’ajoutent continuellement de nouveaux packages. A la différence de SPSS, il n’est pas spécialisé uniquement en statistique, même si le coeur du logiciel est bien centré sur la statistique. Pour progresser rapidement en R il est indispensable :
variables et de tableaux.R-Base.documentation et les forums de discussion en cas de difficulté.Exercice 1
Construire le vecteur x suivant :
[1] "Paris" "Londres" "Tokyo" "New York"
x <- c("Paris", "Londres","Tokyo","New York")
x[1] "Paris" "Londres" "Tokyo" "New York"
Construire le vecteur y suivant :
[1] "France" "Royaume-Uni" "Japon" "USA"
y <- c("France", "Royaume-Uni","Japon","USA")
y[1] "France" "Royaume-Uni" "Japon" "USA"
Construire le vecteur z suivant :
[1] 10.2 14.6 42.8 23.9
z <- c(10.2, 14.6,42.8,23.9)
z[1] 10.2 14.6 42.8 23.9
Construire la matrice m1
[,1] [,2] [,3] [,4]
x "Paris" "Londres" "Tokyo" "New York"
y "France" "Royaume-Uni" "Japon" "USA"
m1<-rbind(x,y)
m1Construire la matrice m2
x y
[1,] "Paris" "France"
[2,] "Londres" "Royaume-Uni"
[3,] "Tokyo" "Japon"
[4,] "New York" "USA"
m2<-cbind(x,y)
m2Construire le data.frame df
y x z
1 France Paris 10.2
2 Royaume-Uni Londres 14.6
3 Japon Tokyo 42.8
4 USA New York 23.9
df<-data.frame(y,x,z)Exercice 2 (d’après J.Barnier)
On a demandé à 4 ménages le revenu des deux conjoints, et le nombre de personnes du ménage :
conjoint1 <- c(1200, 1180, 1750, 2100)
conjoint2 <- c(1450, 1870, 1690, 0)
nb_personnes <- c(4, 2, 3, 2)Calculer le revenu total de chaque ménage, puis diviser par le nombre de personnes pour obtenir le revenu par personne de chaque ménage.
revenu_total <- conjoint1 + conjoint2
revenu_total / nb_personnes[1] 662.500 1525.000 1146.667 1050.000